﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Runtime.CompilerServices;

namespace IBRx {
	public class MarketDepth : IBResponse { }

	public class MarketDepthL1 : MarketDepth {
		public int TickerId { get; private set; }
		public int Position { get; private set; }
		public int Operation { get; private set; }
		public int Side { get; private set; }
		public double Price { get; private set; }
		public int Size { get; private set; }

		[MethodImplAttribute(MethodImplOptions.AggressiveInlining)]
		public MarketDepthL1(int tickerId, int position, int operation, int side, double price, int size) {
			this.TickerId = tickerId;
			this.Position = position;
			this.Operation = operation;
			this.Side = side;
			this.Price = price;
			this.Size = size;
		}
	}

	public class MarketDepthL2 : MarketDepth {
		public int TickerId { get; private set; }
		public int Position { get; private set; }
		public string MarketMaker { get; private set; }
		public int Operation { get; private set; }
		public int Side { get; private set; }
		public double Price { get; private set; }
		public int Size { get; private set; }

		[MethodImplAttribute(MethodImplOptions.AggressiveInlining)]
		public MarketDepthL2(int tickerId, int position, string marketMaker, int operation, int side, double price, int size) {
			this.TickerId = tickerId;
			this.Position = position;
			this.MarketMaker = marketMaker;
			this.Operation = operation;
			this.Side = side;
			this.Price = price;
			this.Size = size;
		}
	}
}
